import java.util.Scanner;

public class demo {

    // 骆驼命名法▲
//从C/C++转到Java的程序员，一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词，例如“hello_world”；
//而Java则采用一种叫骆驼命名法的规则：除首个单词以外，所有单词的首字母大写，例如“helloWorld”。请你帮可怜的程序员们自动转换变量名。
//          输入
//      hello_world
//      nice_to_meet_you
//          输出
//      helloWorld
//      niceToMeetYou
    public static void main1(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.next();
            char[] ch = str.toCharArray();

            for (int i=0; i<ch.length-1; i++) {
                if (ch[i] == '_') {
                    ch[i+1] = (char)(ch[i+1]-'a'+'A');//字符的运算 会转换成int类型
                }
            }

            for (int i=0; i<ch.length; i++) {
                if (ch[i] != '_') {
                    System.out.print(ch[i]);
                }
            }
            System.out.println();
        }
    }


    // 单词倒排▲
//对字符串中的所有单词进行倒排。
//说明：
//1、构成单词的字符只有26个大写或小写英文字母；
//2、非构成单词的字符均视为单词间隔符；
//3、要求倒排后的单词间隔符以一个空格表示；如果原字符串中相邻单词间有多个间隔符时，倒排转换后也只允许出现一个空格间隔符；
//4、每个单词最长20个字母；
//数据范围：字符串长度满足
//1≤n≤10000
//          输入
//      I am a student
//          输出
//      student a am I

//          输入
//      $bo*y gi!r#l
//          输出
//      l r gi y bo

    // 判断是否是字母▲
    public static boolean isAlpha(char ch) {
        if ((ch>='a' && ch<='z') || (ch>='A' && ch<='Z')) {
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            char[] ch = str.toCharArray();
            for (int i=0; i<ch.length; i++) {
                // 判断是否是字母 不是字母就换成空格
                if (!isAlpha(ch[i])) {
                    ch[i] = ' ';
                }
            }
            str = String.valueOf(ch);
            String[] arr = str.split(" ");//末尾或者开头可能有空格 使arr[0或者最后一个] = ""
            StringBuffer sb =new StringBuffer();
            for (int i=arr.length-1; i>=0; i--) {
                sb.append(arr[i]+" ");
            }
            // 因为最后会有个空格 导致格式不对 所以我们要去空格
            // toString().trim() 方法是用于删除字符串的头尾空白符（只有头和尾）。返回值是删除头尾空白符的字符串
            System.out.println(sb.toString().trim());
        }
    }
}

